// Enqueue JS and pass ajax_url + nonce add_action('admin_enqueue_scripts', function () { wp_enqueue_script('pr-custom-ajax', plugin_dir_url(__FILE__) . 'admin.js', array('jquery'), null, true); wp_localize_script('pr-custom-ajax', 'myAjax', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('pr_download_nonce') )); }); // AJAX callback for property download add_action("wp_ajax_pr_import_auth", "pr_import_auth"); function pr_import_auth() { if (!isset($_POST['security']) || !wp_verify_nonce($_POST['security'], 'pr_download_nonce')) { wp_send_json_error('Unauthorized request'); } $pr_import = new pr_properties_class(); $pr_import->download_xml(); $data = array( 'action' => 'delete', 'chunk' => 0, 'size' => 1000 ); update_option('pr_api_info', json_encode($data)); wp_send_json_success('Properties downloaded'); }{"code":"rest_no_route","message":"\u041f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f URL \u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d.","data":{"status":404}}